package com.eastfair.auth.service;

import com.eastfair.auth.dto.OrganizationDTO;
import com.eastfair.auth.entity.Organization;
import com.eastfair.auth.enumeration.OrganizationOrgTypeEnum;
import com.eastfair.core.base.R;

/**
 * <p>
 * 资源-厦门项目操作业务接口
 *
 * </p>
 *
 * @author ligang
 * @date 2022-05-27
 */
public interface XiamenOrganizationService {

    /**
     * 查询场内工作资源
     *
     * @param organizationDTO 实体
     *                        orgType 节点类型
     *                        resourceId 资源id
     *                        resourceType 资源类型
     * @param resourceOrgType 组织类型#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统;P_R_EXHIBITOR:展商组;P_R_SPONSOR:主办组;P_R_BUILDER:搭建商组;P_R_COURT:主场组;P_R_TRANSPORT:主运组;P_R_BOOKING:场馆方组;P_R_REPAST:餐饮方组;EXHIBITOR:展商;EXHIBITOR_STAFF:展商员工;SPONSOR:主办;SPONSOR_STAFF:主办员工;BUILDER:搭建商;BUILDER_STAFF:搭建商员工;COURT:主场;COURT_STAFF:主场员工;TRANSPORT:主运;TRANSPORT_STAFF:主运员工;BOOKING:场馆方;BOOKING_STAFF:场馆方员工;REPAST:餐饮方;REPAST_STAFF:餐饮方员工;STAFF:员工;OTHER:其他-枚举
     * @return
     */
    Organization query(OrganizationDTO organizationDTO, OrganizationOrgTypeEnum resourceOrgType);


    /**
     * 创建场内工作组
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgType 节点类型
     *                        name 节点名称
     *                        parentId 父级节点id
     *                        resourceId 资源id
     *                        resourceType 资源类型
     *                        List<Long> userIds 用户id
     *                        List<Long> roleIds 角色id
     * @param resourceOrgType 组织类型#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统;P_R_EXHIBITOR:展商组;P_R_SPONSOR:主办组;P_R_BUILDER:搭建商组;P_R_COURT:主场组;P_R_TRANSPORT:主运组;P_R_BOOKING:场馆方组;P_R_REPAST:餐饮方组;EXHIBITOR:展商;EXHIBITOR_STAFF:展商员工;SPONSOR:主办;SPONSOR_STAFF:主办员工;BUILDER:搭建商;BUILDER_STAFF:搭建商员工;COURT:主场;COURT_STAFF:主场员工;TRANSPORT:主运;TRANSPORT_STAFF:主运员工;BOOKING:场馆方;BOOKING_STAFF:场馆方员工;REPAST:餐饮方;REPAST_STAFF:餐饮方员工;STAFF:员工;OTHER:其他-枚举
     * @param resourceOrgTypeStaff 员工组织类型#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统;P_R_EXHIBITOR:展商组;P_R_SPONSOR:主办组;P_R_BUILDER:搭建商组;P_R_COURT:主场组;P_R_TRANSPORT:主运组;P_R_BOOKING:场馆方组;P_R_REPAST:餐饮方组;EXHIBITOR:展商;EXHIBITOR_STAFF:展商员工;SPONSOR:主办;SPONSOR_STAFF:主办员工;BUILDER:搭建商;BUILDER_STAFF:搭建商员工;COURT:主场;COURT_STAFF:主场员工;TRANSPORT:主运;TRANSPORT_STAFF:主运员工;BOOKING:场馆方;BOOKING_STAFF:场馆方员工;REPAST:餐饮方;REPAST_STAFF:餐饮方员工;STAFF:员工;OTHER:其他-枚举
     * @return
     */
    R<Organization> create(OrganizationDTO organizationDTO, OrganizationOrgTypeEnum resourceOrgType, OrganizationOrgTypeEnum resourceOrgTypeStaff);

    /**
     * 修改场内工作组
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     *                        name 节点名称
     *                        resourceId 资源id
     *                        resourceType 资源类型
     *                        List<Long> userIds 用户id
     *                        List<Long> roleIds 角色id
     * @return
     */
    R<Organization> upd(OrganizationDTO organizationDTO);

    /**
     * 修改场内工作组
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     * @param resourceOrgType 组织类型#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统;P_R_EXHIBITOR:展商组;P_R_SPONSOR:主办组;P_R_BUILDER:搭建商组;P_R_COURT:主场组;P_R_TRANSPORT:主运组;P_R_BOOKING:场馆方组;P_R_REPAST:餐饮方组;EXHIBITOR:展商;EXHIBITOR_STAFF:展商员工;SPONSOR:主办;SPONSOR_STAFF:主办员工;BUILDER:搭建商;BUILDER_STAFF:搭建商员工;COURT:主场;COURT_STAFF:主场员工;TRANSPORT:主运;TRANSPORT_STAFF:主运员工;BOOKING:场馆方;BOOKING_STAFF:场馆方员工;REPAST:餐饮方;REPAST_STAFF:餐饮方员工;STAFF:员工;OTHER:其他-枚举
     * @return
     */
    R<Organization> del(OrganizationDTO organizationDTO, OrganizationOrgTypeEnum resourceOrgType);

    /**
     * 添加员工
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     *                        userIds 用户id
     *                        resourceId 资源id
     * @param isAdmin        是否管理员
     * @param resourceOrgType 组织类型#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统;P_R_EXHIBITOR:展商组;P_R_SPONSOR:主办组;P_R_BUILDER:搭建商组;P_R_COURT:主场组;P_R_TRANSPORT:主运组;P_R_BOOKING:场馆方组;P_R_REPAST:餐饮方组;EXHIBITOR:展商;EXHIBITOR_STAFF:展商员工;SPONSOR:主办;SPONSOR_STAFF:主办员工;BUILDER:搭建商;BUILDER_STAFF:搭建商员工;COURT:主场;COURT_STAFF:主场员工;TRANSPORT:主运;TRANSPORT_STAFF:主运员工;BOOKING:场馆方;BOOKING_STAFF:场馆方员工;REPAST:餐饮方;REPAST_STAFF:餐饮方员工;STAFF:员工;OTHER:其他-枚举
     * @param resourceOrgType 员工组织类型#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统;P_R_EXHIBITOR:展商组;P_R_SPONSOR:主办组;P_R_BUILDER:搭建商组;P_R_COURT:主场组;P_R_TRANSPORT:主运组;P_R_BOOKING:场馆方组;P_R_REPAST:餐饮方组;EXHIBITOR:展商;EXHIBITOR_STAFF:展商员工;SPONSOR:主办;SPONSOR_STAFF:主办员工;BUILDER:搭建商;BUILDER_STAFF:搭建商员工;COURT:主场;COURT_STAFF:主场员工;TRANSPORT:主运;TRANSPORT_STAFF:主运员工;BOOKING:场馆方;BOOKING_STAFF:场馆方员工;REPAST:餐饮方;REPAST_STAFF:餐饮方员工;STAFF:员工;OTHER:其他-枚举
     * @return
     */
    R addUser(OrganizationDTO organizationDTO, Integer isAdmin,OrganizationOrgTypeEnum resourceOrgType, OrganizationOrgTypeEnum resourceOrgTypeStaff);


    /**
     * 解散员工
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     *                        userIds 用户id
     *                        resourceId 资源id
     * @return
     */
    /**
     * 解散员工
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     *                        userIds 用户id
     *                        resourceId 资源id
     * @param resourceOrgType 组织类型#{P:厦门智慧场馆;P_VENUE:场馆业务管理系统;P_CERTIFICATE:证件管理系统;P_COMPOSITE_VENUE:综合-场馆管理; P_COMPOSITE_COURT:综合-主场管理;P_COMPOSITE_PRODUCER:综合-搭建商管理;P_COMPOSITE_TRANSPORT:综合-主运管理;P_COMPOSITE_TRADE:综合-商旅管理;P_COMPOSITE_MATING:综合-配套商管理;P_PAY:支付系统;P_EXHIBITOR_SELF:展商自服务;P_CATERINGAPP:餐饮小程序;P_CATERING:餐饮后台服务;P_PORTAL_OUT_VENUE:对外门户-场馆后台;P_PORTAL_OUT_OPERATION:对外门户-运营后台;P_PORTAL_IN_WORK:内部门户-工作后台;P_PORTAL_IN_WORKAPP:内部门户-工作APP;P_OPERATION_CENTER:智慧运营中心系统;P_VISITOR_FRONT:访客前台系统;P_VISITOR_BACK:访客后台系统;P_R_EXHIBITOR:展商组;P_R_SPONSOR:主办组;P_R_BUILDER:搭建商组;P_R_COURT:主场组;P_R_TRANSPORT:主运组;P_R_BOOKING:场馆方组;P_R_REPAST:餐饮方组;EXHIBITOR:展商;EXHIBITOR_STAFF:展商员工;SPONSOR:主办;SPONSOR_STAFF:主办员工;BUILDER:搭建商;BUILDER_STAFF:搭建商员工;COURT:主场;COURT_STAFF:主场员工;TRANSPORT:主运;TRANSPORT_STAFF:主运员工;BOOKING:场馆方;BOOKING_STAFF:场馆方员工;REPAST:餐饮方;REPAST_STAFF:餐饮方员工;STAFF:员工;OTHER:其他-枚举
     * @return
     */
    R breakUser(OrganizationDTO organizationDTO,OrganizationOrgTypeEnum resourceOrgType);

}
